草庐IT

Android FrameWork--SytemServer进程fork

全部标签

c++ - DLL/SO 库,库内存与调用进程有何关系?

我读到当进程终止时(以任何方式)操作系统释放了进程的所有内存,因此不需要依次调用每个dtor。现在我的问题是DLL或SO的内存与分配内存的清理有什么关系?我问是因为我最终可能会使用Java和/或C#调用带有一些静态C样式函数的C++DLL,这些函数将在堆上分配C++对象。抱歉,如果我对堆线程与堆栈线程的看法太过分了,我觉得我已经看不到__堆(即只有一个)的概念。使用库时还有其他潜在的内存泄漏陷阱吗? 最佳答案 库在加载时成为进程的一部分。对于内存、句柄、资源等的整理,系统不区分它们是在可执行镜像中创建的还是在库中创建的。

C++/SQLite - 多进程数据库访问

我想在SQLite数据库中编写多个进程。这是我的C++代码:stringstreamsstream我认为sqlite3_busy_timeout导致成功。但是我查看了结果,发现并不是所有的数据都写入了数据库。我的错误在哪里?有人知道当sqlite3_busy_timeout设置为60000(ms)时调用sqlite3_exec的频率吗?或者,如果第一次尝试以SQLITE_BUSY返回,是否在60000(ms)之后只有一次调用?我已尝试使用以下代码解决问题。但是看起来一直只有一个事件进程。其他进程不会完成...do{if((result=sqlite3_exec(databasePtr,

c++ - 库的子进程的进程组

我正在开发一个将集成到客户端代码中的库(C++)。这个lib将产生一些子进程,并且必须监视它们以在它们死亡(出于任何原因)后立即重新产生它们。我需要使用vfork和exec来生成这些子进程。我知道我必须使用信号处理程序来处理SIGCHLD并调用waitpid来检测哪个child已经死了。然而,用户代码可能正在使用相同的想法来处理它自己的子进程。如果我调用waitpid,我将检索有关可能已死亡(我的或非我的)的任何子进程的信息。如果死亡过程是我的,没问题......快乐的案例。但是,如果它来自用户,他不会得到任何相关信息,因为我已经调用了waitpid。我该如何解决这个问题?我的第一个想

c++ - 如何使用非托管 EasyHook 从进程中的任何线程 Hook 方法?

我在使方法Hook正常工作时遇到了一些问题。如果“我”调用被Hook的方法,我就可以让Hook工作。但是当它在进程运行期间自然发生时,它不会被钩住。我的问题可能源于这样一个事实,即我实际上是在我自己生成的线程中设置这些Hook。显然LhSetInclusiveACL()方法需要知道您要Hook的线程。好吧,这是我的问题...我真的不在乎哪些线程应用了钩子(Hook),我希望它们都被钩住。例如,假设我希望“gdi32.dll”库中的CreateICW()方法与整个进程“iexplorer.exe”Hook。不仅仅是来自线程ID号48291或其他。了解哪些线程将调用您感兴趣的Hook例程需

c++ - 如何检测是否在 Windows Metro 应用程序进程中运行?

我正在开发一个库,我希望能够检测它是否在Metro风格应用程序中运行以选择性地禁用/启用某些功能。可能吗? 最佳答案 您可以使用IMetroMode用于检查您的库是否已加载到Metro风格应用程序中的界面。调用GetMonitorMode()方法,如果pMode将保持MMM_METRO那么您将确定您正在Metro应用程序中运行。 关于c++-如何检测是否在WindowsMetro应用程序进程中运行?,我们在StackOverflow上找到一个类似的问题: ht

c++ - 启动进程并重定向其 stdio 的跨平台方式

我想知道是否有一个跨平台(Windows、Linux、BSD)库,我可以使用它异步启动一个进程,并为其标准管道提供类似于iostream的包装器。我希望它能够知道进程何时终止。谢谢。 最佳答案 您可以使用2个库:Q进程您可以使用Qt工具包中的QProcess类。更多信息可以在thisstackoverflowquestion上找到和qtlibrary.libexecstream这library比Qt轻量级,跨平台其他pstreams发布0.17Ifyouonlywantaconsoleapplicationyoucanusetheo

c++ - 在 Win 7 中从远程进程获取 PEB

规范:Windows7x64,VisualC++目标:我正在尝试获取RemotePEB来自示例程序(例如calc.exe)。我找到了procID,并打开了一个具有所有良好权限的进程句柄。我现在开始编写一个类来使用PROCESS_BASIC_INFORMATION从进程中检索PEB的位置。问题:我在其他地方发现了一些帖子,这些帖子似乎表明NtQueryInformationProcess在MS变成了垃圾。一篇文章提出了一种从ntdll.dll中动态运行时链接NtQueryInformationProcess的方法。但是,我认为如果没有大量的错误处理,从长远来看这将是不稳定的(MS明天可能

c++ - 如何在 Windows 上限制进程的 CPU 使用率?

我需要将应用程序的CPU使用率控制在一定限度内。我的应用程序将在WinXP、Vista、Win7和Windows8上运行。我尝试实现获取当前进程的CPU使用率并使用Sleep()方法。(我使用APIGetProcessTimes和GetSystemTimes)伪代码:for(;;){//Getthecurrentprocess'sCPUUsageintcpuUsage=CalculateCPUUsage();if(cpuUsage>50)Sleep(10)else{//Projectimplementationcode}}问题:我能否编写一个应用程序来监视进程的CPU使用率,并在CPU

c++ - Windows Phone 中的进程关联

我是WP库项目,我试图将繁重的进程绑定(bind)到硬件线程(0或1)。因此使用该库的应用程序使用其他可用核心。我们可以在WindowsPhone8应用程序中设置进程关联吗?我找不到有关WP8的SetProcessAffinity之类的文档。 最佳答案 在WindowsPhone(和大多数移动平台)上无法在低级别访问处理器亲和性和许多硬件功能,因此硬件可以随着时间的推移升级(例如,future的WindowsPhone可能有超过2个内核)而无需导致应用程序不兼容。解决方案是使用平台提供的抽象库,这些库在当时的硬件条件下能发挥最佳作用

c++ - 进程外内存堆可在32位地址空间内工作

问题:大型模拟游戏中有许多荒谬的不同对象,必须对其进行跟踪,更新并用于视觉渲染和逻辑模型更新。仅4GB的地址空间,您就只能在内存中容纳这么多东西。如果您求助于磁盘,除非运气好并且不断访问页面缓存,否则事情会开始放慢速度。但是即使那样,当文件系统同步到磁盘时,进行大量更新/写入也将是昂贵的。假设用户至少有32GB的RAM(少数报告有64GB),并且希望进行巨大的模拟,从而导致该模型所承载的数据量比游戏中要处理的大多数事物都要多一个数量级。它们当然具有64位操作系统(例如Windows7x64或Windows8x64)。自然地,如果仅将所有这些模型数据存储在进程中的虚拟地址空间中,即使使用